#include <iostream>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

void test()
{
    umask(000);
    int n = mkfifo("fifo", 0666);               // 创建管道文件

    if (n != 0)
    {
        return;
    }

    int rfd = open("fifo", O_RDONLY);           // 读取方式打开文件
    if (rfd == -1)
    {
        return;
    }

    while (true)                                // 读取字符串
    {
        char buf[1024] = { 0 };
        int num = read(rfd, buf, sizeof(buf) - 1);
        if (num == -1)
        {
            continue;
        }

        std::cout << buf << std::endl;
    }

    close(rfd);
}

int main()
{
    test();
    
    return 0;
}
